#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
此文件用于自动取款机的存取款模拟
需求:
    要求有登陆和退出、查询余额、取钱，存钱等操作

"""
import platform
import Main
# ==============================变量定义
error = '=' * 10 + '无效的键盘输入' + '=' * 10
userList = [  # ==============================用户列表
    {'inx': 7, 'name': '1', 'pwd': '123', 'money': 888},
    {'inx': 6, 'name': '2', 'pwd': '123', 'money': 888},
    {'inx': 5, 'name': '3', 'pwd': '123', 'money': 888},
    {'inx': 4, 'name': '4', 'pwd': '123', 'money': 888},
    {'inx': 3, 'name': '5', 'pwd': '123', 'money': 888},
    {'inx': 2, 'name': '6', 'pwd': '123', 'money': 888},
    {'inx': 1, 'name': '7', 'pwd': '123', 'money': 888}
]
global login
global list

login = {'inx': 0, 'name': '', 'pwd': '', 'money': 0}  # 登录缓存

menuList = []  # ==============================选择菜单
# menuList.insert(len(menuList),'1. 用 户 登 录')
menuList.insert(len(menuList), '1. 余 额 查 询')
menuList.insert(len(menuList), '2. 自 助 存 款')
menuList.insert(len(menuList), '3. 自 助 取 款')
menuList.insert(len(menuList), '4. 用 户 退 出')

index = []  # ==============================界面效果
if platform.system() == 'Windows':
    index.insert(0, '┏━━━{}┅┈'.format(' 存取款管理系统 ' + '━' * 8))
    index.insert(1, '┃{:<30}━━━━━━┅┈'.format(''))
    index.insert(2, '┃{:^33}━━━━━━┅┈'.format(' ' * 33))
    oo = 0
    for iii in menuList:
        oo += 1
        index.append('┃{:^30}'.format(iii) + ' ' * oo * 3 + '━━━━━━┅┈')
    index.append('┃{:^48}━━━━━━┅┈'.format(' ' * 48))
    index.append('┗{}┅┈'.format('━' * 32))
else:
    index.insert(0, '┏━━━{}┅┈'.format(' 存取款管理系统 ' + '━' * 15))
    index.insert(1, '┃{:<30}━━━━━━┅┈'.format(''))
    index.insert(2, '┃{:^33}━━━━━━┅┈'.format(' ' * 33))
    oo = 0
    for iii in menuList:
        oo += 1
        index.append('┃{:^30}'.format(iii) + ' ' * oo * 3 + '━━━━━━┅┈')
    index.append('┃{:^48}━━━━━━┅┈'.format(' ' * 48))
    index.append('┗{}┅┈'.format('━' * 58))

state = ['', '']  # ==============================状态


# ==============================函数功能
def page00():  # 界面刷新
    global login
    global list
    print('\n' * 20)
    for ii in range(len(index)):
        print(index[ii])
    print(state[0])
    try:
        list = input(state[1])
    except KeyboardInterrupt:  # 去除此类错误提示!
        exit()


def page01():  # 主功能
    global login
    global list
    while True:
        list = ''
        if login['name'] == '':
            state[0] = '{:>50}  '.format('您还未登录!请先登录...')
            state[1] = '  {}'.format('请输入用户名:')
        else:
            state[0] = '{:>50}  '.format('尊敬的:' + login['name'] + ',您已登录!')
        page00()
        # ==============================登录前
        while login['name'] == '' and list != '':
            userName = list
            for i in range(len(userList)):
                userList[i]['inx'] = i
                if userList[i]['name'] == userName:
                    login['inx'] = i
                    login = userList[i]
                    state[0] = '{:>50}  '.format(
                        '尊敬的:' + login['name'] + ' 您已登录!')
                    state[1] = '  {}'.format('请输入对应的数字选择:')
                    break
            if login['name'] == '':
                userList.append({'inx': len(userList) + 1,
                                 'name': userName, 'pwd': '123', 'money': 0})
                login = userList[-1]
                state[0] = '{:>50}  '.format(login['name'] + '注册成功,您已登录!')
                state[1] = '  {}'.format('请输入对应的数字选择:')
            page00()
        # ==============================登录后
        while login['name'] != '' and list != '':
            if list == '1':
                list = ''

                state[0] = '{:>50}  '.format('尊敬的:' + login['name'] + ' 您已登录!')
                state[1] = '  用户名:{name},当前余额{money}元\n  输入对应数字选择其它功能:'.format(
                    **login)
                page00()
            elif list == '2':
                list = ''
                cc = ''
                cc = input('请输入存款金额:')
                while cc.isdigit() == False:
                    cc = input('格式错误,请输入存款金额:')
                login['money'] += int(cc)
                state[0] = '{:>50}  '.format('尊敬的:' + login['name'] + ' 您已登录!')
                state[1] = '  已存入' + \
                    str(cc) + \
                    '元,用户名:{name},当前余额{money}元\n  输入对应数字选择其它功能:'.format(
                        **login)
                page00()
            elif list == '3':
                list = ''
                cc = ''
                state[0] = '{:>50}  '.format('尊敬的:' + login['name'] + ' 您已登录!')
                cc = input('请输入取款金额:')
                while login['money'] < int(cc) and cc.isdigit():
                    cc = input('余额不足!请输入取款金额:')
                while not cc.isdigit():
                    cc = input('格式错误,请输入取款金额:')
                login['money'] -= int(cc)
                state[1] = '  已取出' + \
                    str(cc) + \
                    '元,用户名:{name},当前余额{money}元\n  输入对应数字选择其它功能:'.format(
                        **login)
                page00()
            elif list == '4':
                list = ''
                login = {'inx': 0, 'name': '', 'pwd': '', 'money': 0}
                state[0] = ''
                state[1] = '  退出成功!输入回车继续'
                page00()
                Main.main()
            else:
                state[1] = '  {}'.format('错误,请再次输入对应的数字选择:')
                page00()
page01()  # ==============================运行
